#ifndef STL_TEST_H
#define STL_TEST_H
#include <map>
#include <vector>
#include <string>
#include <iostream>
#include "MapTest.h"

typedef std::map<std::string, std::vector<std::string> > Teams;

class STLTest {
public:
	class Item {
	public:
		Item(int i = 0) : mData(i) {}
		int data() const { return mData; }
	private:
		int mData;
		friend std::ostream& operator << (std::ostream&, const Item&);
		//friend class std::ostream;
		/*std::ostream operator << (std::ostream & os) {
		os << mData;
		return os;
		}*/
	};
	typedef std::vector<Item> ItemContaniner;

	enum {NumberOfTeam = 10, NumberOfMembersPerTeam=10};
	STLTest();
	~STLTest();

	STLTest* testMap();
	STLTest* runTest();
	STLTest* testSorter();
	STLTest* testTransform();

	static bool memSorter( int param1, int param2 );
private:
	Item transformItem(Item item);
	class IntSorter {
	public:
		bool operator() (int i1, int i2) {
			return i1 > i2;
		}
	};

};
std::ostream& operator << (std::ostream& os, const STLTest::Item & item);
#endif